#ifndef LOGIC_H
#define LOGIC_H

// #include <math.h>
#include <cmath>

/**
 * @brief lenToArc
 * @param len   摆幅
 * @param arg   该臂展
 * @param ret   转换结果
 * @return      转换结果
 * @details     摆幅转成角度
 */
static double lenToArc(int len,int arg,bool &ret){

    if(len > (2*arg) || (arg == 0)){
        ret = false;
        return  0.0;
    }else {
        ret = true;
    }

    double per = len * 1.0 / (2*arg);
    double rad = asin( per );   // 获取弧度

    double Rad_to_deg  = 45.0 / atan(1.0);  // 转换关系

    double angle = rad * Rad_to_deg;
    return angle*2.0;
}



/**
 * @brief lenToArc
 * @param len   摆幅
 * @param arg   该臂展
 * @param ret   转换结果
 * @return      转换结果
 * @details     摆幅转成弧度
 */
static double lenToRad(int len,int arg,bool &ret){

    if(len > (2*arg) || (arg == 0)){
        ret = false;
        return  0.0;
    }else {
        ret = true;
    }

    double per = len * 1.0 / (2*arg);
    double rad = asin( per );   // 获取弧度

    return rad;
}

/**
 * @brief lenToPuls
 * @param len
 * @param arg
 * @return
 * @details 弧度转脉冲
 */
static int lenToPuls(double len,int arg){
    double npi = len / arg;
    double pi = atan(1.0)*4;
    int pp = npi * 1000 / pi;
    return pp;
}

static int angleToPuls(double angle){
    int fd = (angle * 1000 /360);
    return  fd;
}



#endif // LOGIC_H
